"""
______________________________
time：2021/6/21
______________________________

"""
import pytest

from selenium import webdriver

from Common.my_logger import logger
from PageObjects.login_page import LoginPage
import TestDatas.global_datas as g_data


# 定义fixture——前置后置——作用域——返回
@pytest.fixture(scope="class")  # 一个测试类中只打开1次浏览器，关闭1次浏览器
def init():
    # 实例化driver，访问登录页面
    logger.info("============ class级 前置操作：打开谷歌浏览器，访问系统登录页面================")
    driver = webdriver.Chrome()
    driver.get("https://pt4webf.xbongbong.com.cn/stand-alone-login.html#/")  # 后续要优化访问url的地址
    yield driver
    logger.info("============ class级 后置操作：关闭谷歌浏览器，退出会话================")
    driver.quit()


@pytest.fixture
def back_login(init):
    init.get("https://pt4webf.xbongbong.com.cn/stand-alone-login.html#/")
    yield init


# 前置条件：用户已登录 后置条件：关闭浏览器,后续系统中的页面操作都需要先登录成功
"""优化——fixture嵌套：一个fixture想完全使用另一个fixture，并在前者的基础上新增一些代码。"""


@pytest.fixture(scope="class")
def userlogined(init):
    # 实例化driver，访问登录页面
    # driver = webdriver.Chrome()
    # driver.get("https://pt4webf.xbongbong.com.cn/stand-alone-login.html#/")
    # LoginPage(driver).login(*g_data.user)
    # yield driver
    # driver.quit()
    logger.info("============ class级 前置操作：登录xbb系统================")
    LoginPage(init).login(*g_data.user)
    yield init


# 执行完上一个用例后，返回到首页。从首页开始继续执行下一个用例
@pytest.fixture
def back_home(userlogined):
    userlogined.get(g_data.home_url)
    yield userlogined


"""
之后在写其他页面的测试用例时，直接传参back_home这个函数就行了，返回首页
"""
